package me.xinping.libs.recording

import me.xinping.libs.utils.FileUtils
import me.xinping.libs.utils.TimeUtils
import java.io.File
import java.text.SimpleDateFormat
import java.util.*

/**
 * 录音文件相关.
 * <p>
 * Date 2018/12/4
 * @author fanxinping_cd@keruyun.com
 */
object RecordFileUtils {
    const val RECORD_FILE_SUFFIX = ".amr"

    val RECORD_SDF_DATE_CN = object : ThreadLocal<SimpleDateFormat>() {
        override fun initialValue(): SimpleDateFormat {
            return SimpleDateFormat("MM月dd日HH点mm分ss秒", Locale.CHINESE)
        }
    }.get()

    fun generateRecordFilePath(): String {
        val rootDir = File(FileUtils.RECORD_ROOT_PATH)
        if (!rootDir.exists()) {
            rootDir.mkdirs()
        }
        var file = FileUtils.RECORD_ROOT_PATH
            .plus(TimeUtils.getDate(RECORD_SDF_DATE_CN, System.currentTimeMillis()))
            .plus(RECORD_FILE_SUFFIX)
        var index = 1
        while (File(file).exists()) {
            file = file.plus("_$index")
            index++
        }
        return file
    }

    /**
     * 保存的录音文件目录下所有录音文件
     */
    fun loadRecorderFiles(): Array<String> {
        val rootDir = File(FileUtils.RECORD_ROOT_PATH)
        if (rootDir.exists() && rootDir.isDirectory) {
            val list = rootDir.list { _, name ->
                name?.endsWith(RecordFileUtils.RECORD_FILE_SUFFIX) ?: false
            }
            //按时间降序排列
            list.sortByDescending { File(it).lastModified() }
            return list
        }
        return arrayOf()
    }
}